Set failbit when strtold sets errno to ERANGE when parsing floating point values. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@179461 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/locale b/include/locale index 05020e1..2e0d0f9 100644 --- a/include/locale +++ b/include/locale 
@@ -906,13 +906,20 @@  {  if (__a != __a_end)  { + typename remove_reference<decltype(errno)>::type __save_errno = errno; + errno = 0;  char *__p2;  long double __ld = strtold_l(__a, &__p2, _LIBCPP_GET_C_LOCALE); + typename remove_reference<decltype(errno)>::type __current_errno = errno; + if (__current_errno == 0) + errno = __save_errno;  if (__p2 != __a_end)  {  __err = ios_base::failbit;  return 0;  } + else if (__current_errno == ERANGE) + __err = ios_base::failbit;  return static_cast<_Tp>(__ld);  }  __err = ios_base::failbit;